Stisknuti klaves

Otázka od: LUKES Václav

18. 10. 2002 13:29


Ahoj,

mam D6 a prosim o radu.
Stojim napr. na EDITu a ja bych rad, po stisku klaves CTRL+H napsal treba
hlasku ShowMessage('...');

Diky

V.

Odpovedá: Petr Hložek

18. 10. 2002 14:44


----- Original Message -----
From: "LUKES Václav" <lukes@ans.cz>
To: <delphi-l@clexpert.cz>
Sent: Friday, October 18, 2002 2:28 PM
Subject: Stisknuti klaves


>
> Ahoj,
>
> mam D6 a prosim o radu.
> Stojim napr. na EDITu a ja bych rad, po stisku klaves CTRL+H napsal treba
hlasku ShowMessage('...');

Ahoj,

do udalosti OnKeyPress napises toto:

 if key=#8 then begin
   ShowMessage('zmackle CTRL+H');
   key:=#0
 end

Odpovedá: ing. Jan Fiala

18. 10. 2002 16:00

1. do ActionListu dat akci s horkou klavesou Ctrl+H a v on Execute delat
co potrebujes. Bude pracovat v cele aplikaci

2. ad 1), pouze to bude polozka v popup menu. Bude pracovat nad tim,
ceho se popup menu tyka (treba formular)

3. v OnKeyDown prislusne komponenty (Editu) a to osetrit - pracuje
pouze pro ten jeden edit

--
ing. Jan Fiala
mailto:jan.fiala@iol.cz

18.10.2002 LUKES Václav:
> mam D6 a prosim o radu. Stojim napr. na EDITu a ja bych rad, po
> stisku klaves CTRL+H napsal treba hlasku ShowMessage('...');

Odpovedá: LUKES Václav

18. 10. 2002 16:26

Parada, diky, funguje to. Jeste malickost, ten znak # mi rika, ze jde o control
a ta osmicka mi rika, ze jde o osmi znak v abecede ?
V.


-----Original Message-----
From: Petr Hložek [mailto:petr_h@mrp.cz]
Sent: Friday, October 18, 2002 2:37 PM
To: delphi-l@clexpert.cz
Subject: Re: Stisknuti klaves



----- Original Message -----
From: "LUKES Václav" <lukes@ans.cz>
To: <delphi-l@clexpert.cz>
Sent: Friday, October 18, 2002 2:28 PM
Subject: Stisknuti klaves


>
> Ahoj,
>
> mam D6 a prosim o radu.
> Stojim napr. na EDITu a ja bych rad, po stisku klaves CTRL+H napsal treba
hlasku ShowMessage('...');

Ahoj,

do udalosti OnKeyPress napises toto:

 if key=#8 then begin
   ShowMessage('zmackle CTRL+H');
   key:=#0
 end

Odpovedá: Lubos Urban

18. 10. 2002 16:36

napises obsluhu udalosti onKeyDown alebo OnKeyUp alebo onKeyPress

napr. takto:

procedure TForm.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if(Key= 72) and (ssCtrl in Shift) then
    ShowMessage('message');
end;


----- Original Message -----
From: "LUKES Václav" <lukes@ans.cz>
To: <delphi-l@clexpert.cz>
Sent: Friday, October 18, 2002 2:28 PM
Subject: Stisknuti klaves



Ahoj,

mam D6 a prosim o radu.
Stojim napr. na EDITu a ja bych rad, po stisku klaves CTRL+H napsal treba
hlasku ShowMessage('...');

Diky

V.


Odpovedá: Roman

18. 10. 2002 16:45

>Parada, diky, funguje to. Jeste malickost, ten znak # mi rika, ze jde o
control a ta osmicka mi rika, ze jde o >osmi znak v abecede ?
>V.
>
>do udalosti OnKeyPress napises toto:
>
> if key=#8 then begin
> ShowMessage('zmackle CTRL+H');
> key:=#0
> end

  Ne, ten # udava sestnactkovou soustavu, ta 8 je ASCII kod, ktery vraci
CTRL+H.
Radeji bych asi pouzil udalost OnKeyDown (popr. OnKeyUp).

Roman
==============================
http://kouzelne.misto.cz


Odpovedá: Petr Hložek

18. 10. 2002 15:52


----- Original Message -----
From: "LUKES Václav" <lukes@ans.cz>
To: <delphi-l@clexpert.cz>
Sent: Friday, October 18, 2002 2:56 PM
Subject: RE: Stisknuti klaves


> Parada, diky, funguje to. Jeste malickost, ten znak # mi rika, ze jde o
control a ta osmicka mi rika, ze jde o osmi znak v abecede ?
> V.

To #8 je ordinalni hodnota stisknute klavesy. Napsal jsem si na to ve
freepascalu programek. Tady je kod:
uses crt;
var
  klav : Char;
begin
  ClrScr;
  repeat
    klav:=ReadKey;
    Writeln(ord(klav)); {vrati kod stiskle klavesy}
  until klav=#27
end.


Odpovedá: ing. Jan Fiala

18. 10. 2002 18:59

18.10.2002 Roman:
>   Ne, ten # udava sestnactkovou soustavu, ta 8 je ASCII kod, ktery vraci
> CTRL+H.
> Radeji bych asi pouzil udalost OnKeyDown (popr. OnKeyUp).

Sestnactkovou asi ne. To by tam musele byt znak $
#8 je znak retezce, napsany pomoci jeho ASCII kodu v desitkove
soustave. Je to jako bys napsal retezec 'A'#72'OJ'

--
ing. Jan Fiala
mailto:jan.fiala@iol.cz

Odpovedá: Lebeda David

21. 10. 2002 7:15

> Parada, diky, funguje to. Jeste malickost, ten znak # mi rika, ze jde
> o control a ta osmicka mi rika, ze jde o osmi znak v abecede ?

Ne. Key je typu char. Hodnotu char muzes identifikovat primo znakem (napr. 'A'
nebo pomoci ordinalni hodnoty. V takovem pripade se pred to cislo pise #. V
danem
pripade 'A' a #65 je totez. Blize viz help.

> do udalosti OnKeyPress napises toto:
>
> if key=#8 then begin
> ShowMessage('zmackle CTRL+H');
> key:=#0
> end

Tohle mi nepripada moc citelne. Znak #8 normalne odpovida klavese backspace,
kterou ovsem nelze chytit v OnKeyPress (muselo by se do OnKeyDown). To, ze
dvojice CTRL + H se v OnKeyPress jevi jako #8 mi prijde spis jako vedlejsi
efekt a
CTRL+H bych chytal v OnKeyDown doopravdy jako CTRL a H, tj.

if (ssCTRL in Shift) and (Key = ord('H')) then...

psano z hlavy bez Delphi, snad je to dobre.

David Lebeda